package service;

import java.util.Date;

import bean.Cliente;
import bean.Cotizacion;
import bean.ItemCotizacion;
import bean.OrdenPedido;
import bean.vo.OrdenPedidoVO;

public class ServiciosOrdenPedido {

	protected static OrdenPedido buscarOrdenPedido (String cuitCliente, Integer nroPedido) throws Exception {
		Cliente cli = ServiciosCliente.buscarCliente(cuitCliente);
		return (OrdenPedido) SistemaCVR.getInstancia().buscarEntidad(new OrdenPedido(nroPedido, cli));
	}
	
	public static OrdenPedidoVO buscarOrdenPedido (OrdenPedidoVO o) throws Exception {
		OrdenPedido orden = ServiciosOrdenPedido.buscarOrdenPedido(o.getCliente().getCuit(), 
				o.getNumeroPedido());
		return orden != null? orden.getVO() : null ;
	}
	
	public static void crearOrdenPedido(OrdenPedidoVO o, Integer numeroCotizacion) throws Exception{
		String cuitCliente = o.getCliente().getCuit(); 
		Integer numeroPedido = o.getNumeroPedido();
		
		if (cuitCliente == null || numeroCotizacion == null || numeroPedido == null) {
			throw new Exception("ERROR - Numero de cotizacion/numero de pedido son requeridos.");
		}
		
		Cotizacion cotizacion = ServiciosCotizacion.buscarCotizacion(cuitCliente, numeroCotizacion);
		if (cotizacion == null){
			throw new Exception("ERROR - No existe una para el cliente/numero ingresados");
		}
		
		if (cotizacion.getFechaCaducidad().before(new Date())) {
			throw new Exception("ERROR - La cotizacion esta vencida");
		}
		
		if (ServiciosOrdenPedido.buscarOrdenPedido(cuitCliente, numeroCotizacion) == null) {
			OrdenPedido ordenPedido = new OrdenPedido(numeroPedido, cotizacion, new Date());
			
			for (ItemCotizacion  itemCotizacion : cotizacion.getItemsCotizacion()) {
				ordenPedido.agregarItem(itemCotizacion.getProducto(), itemCotizacion.getCantidadCotizada());
			}
			
			SistemaCVR.getInstancia().agregarEntidad(ordenPedido);
		} else {
			throw new Exception("ERROR - Ya existe una orden de pedido para el cliente/numero de orden ingresados.");	
		}
	}
	
}
